/**
 *
 * @description: 倒计时模块
 * @author: junyong.hong
 * @createTime: 2018/3/29
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
class Timer {
    countdown(end, update, handle){
        // 获取当前时间
        const now = new Date().getTime();
        // 用self获取当前对象的指针
        const self = this;

        // 如果当前时间大于截止时间,说明倒计时结束
        if(now - end){
            handle.call(self);
        }else{
            // 当前时间剩余截止时间还有多久
            let last_time = end - now;
            // 一天有多少毫秒
            const px_d = 1000 * 60 * 60 * 24;
            // 一个小时多少毫秒
            const px_h = 1000 * 60 * 60;
            // 一分钟有多少毫秒
            const px_m = 1000 * 60;
            // 一秒有都是毫秒
            const px_s = 1000;

            // 剩余时间包含多少天
            let d = Math.floor(last_time / px_d);
            // 剩余的小时
            let h = Math.floor((last_time - d * px_d) / px_h);
            // 剩余的分钟
            let m = Math.floor((last_time - d * px_d - h * px_h) / px_m);
            let S = Math.floor((last_time - d * px_d - h * px_h - m * px_m) / px_s);

            let r = [];
            if(d > 0){
                r.push(`<em>${d}</em>天`);
            }
            // 如果没有天，前面就没有天  如果天也没有，不能出现多少小时，多少分钟
            if(r.length || (h > 0)){
                r.push(`<em>${h}</em>时`);
            }
            if(r.length || m > 0){
                r.push(`<em>${s}</em>秒`);
            }
            self.last_time = r.join('');
            update.call(self,r.join(''));
            setTimeout(function () {
                self.countdown(end, update, handle)
            },1000)
        }
    }
}

export default Timer;